package sistkaraoke.negocio;

import java.util.Collection;

import sistkaraoke.dao.*;
import sistkaraoke.excepcion.DAOExcepcion;
import sistkaraoke.modelo.*;

public class GestionSalas implements IGestionSalas  {
	
	public int insertar(String nombre, int capacidad, String descripcion, int idlocal) throws DAOExcepcion {
		
		ISalaDAO dao = new SalaDAO();

		ISala vlSala = new Sala();
		vlSala.setNombre(nombre);
		vlSala.setCapacidad(capacidad);
		vlSala.setDescripcion(descripcion);
		ILocal vLocal = new Local();
		vLocal.setId(idlocal);
		vlSala.setLocal(vLocal);
		
		return dao.insertar(vlSala);
	}
	
	public int actualizar(int idSala, String nombre, int capacidad, String descripcion, int idlocal) throws DAOExcepcion  {
		
		ISalaDAO dao = new SalaDAO();

		ISala vlSala = new Sala();
		vlSala.setId(idSala);
		vlSala.setNombre(nombre);
		vlSala.setCapacidad(capacidad);
		vlSala.setDescripcion(descripcion);
		ILocal vLocal = new Local();
		vLocal.setId(idlocal);
		vlSala.setLocal(vLocal);
		
		return dao.actualizar(vlSala);
	}
	
	public int eliminar(int idSala) throws DAOExcepcion {
		ISalaDAO dao = new SalaDAO();
		return dao.eliminar(idSala);
	}
	
	public Collection<ISala> buscarPorNombre(String nombre, int idAdministrador) throws DAOExcepcion{
		ISalaDAO dao = new SalaDAO();
		
		ISala vlSala = new Sala();
		vlSala.setId(0);
		vlSala.setNombre(nombre);
		ILocal vLocal = new Local();
		vLocal.setId(0);
		IAdministrador vAdmin = new Administrador();
		vAdmin.setId(idAdministrador);
		vLocal.setAdministrador(vAdmin);
		vlSala.setLocal(vLocal);
		
		return dao.buscar(vlSala);
	}
	
	public Collection<ISala> buscarPorLocal(int idlocal, int idAdministrador) throws DAOExcepcion{
		ISalaDAO dao = new SalaDAO();
		
		ISala vlSala = new Sala();
		vlSala.setId(0);
		vlSala.setNombre("");
		ILocal vLocal = new Local();
		vLocal.setId(idlocal);
		IAdministrador vAdmin = new Administrador();
		vAdmin.setId(idAdministrador);
		vLocal.setAdministrador(vAdmin);
		vlSala.setLocal(vLocal);
		
		return dao.buscar(vlSala);
	}
	
	public Collection<ISala> listar(int idAdministrador) throws DAOExcepcion{
		ISalaDAO dao = new SalaDAO();
		
		ISala vlSala = new Sala();
		vlSala.setId(0);
		vlSala.setNombre("");
		ILocal vLocal = new Local();
		vLocal.setId(0);
		IAdministrador vAdmin = new Administrador();
		vAdmin.setId(idAdministrador);
		vLocal.setAdministrador(vAdmin);
		vlSala.setLocal(vLocal);
		
		return dao.buscar(vlSala);
	}
	
	public ISala obtener(int idSala, int idAdministrador) throws DAOExcepcion{
		ISalaDAO dao = new SalaDAO();
		
		ISala vlSala = new Sala();
		vlSala.setId(idSala);
		vlSala.setNombre("");
		ILocal vLocal = new Local();
		vLocal.setId(0);
		IAdministrador vAdmin = new Administrador();
		vAdmin.setId(idAdministrador);
		vLocal.setAdministrador(vAdmin);
		vlSala.setLocal(vLocal);
		
		Collection<ISala> cISalas = dao.buscar(vlSala);
		
		if(cISalas.size() > 0)
		{
			for (ISala sala : cISalas)
			{
				vlSala = new Sala();
				vlSala.setId(idSala);
				vlSala.setNombre(sala.getNombre());
				vlSala.setCapacidad(sala.getCapacidad());
				vlSala.setDescripcion(sala.getDescripcion());
				vLocal = new Local();
				vLocal.setId(sala.getLocal().getId());
				vLocal.setNombre(sala.getLocal().getNombre());
				vlSala.setLocal(vLocal);				
			}
		}
		else
			vlSala = null;
		
		return vlSala;
	}
	
	public Collection<ILocal> listarLocal(int idAdministrador) throws DAOExcepcion{
		ISalaDAO dao = new SalaDAO();
		
		ILocal vlocal = new Local();
		IAdministrador vAdmin = new Administrador();
		vAdmin.setId(idAdministrador);
		vlocal.setAdministrador(vAdmin);
		
		return dao.listarLocal(vlocal);
	}
	
	public Collection<ISala> ListarSalaDisponible(int objSala) throws DAOExcepcion{
		ISalaDAO dao = new SalaDAO();
		
		ISala vlSala = new Sala();
		//vlSala.setId(0);
		ILocal vLocal = new Local();
		vLocal.setId(objSala);
		
		vlSala.setLocal(vLocal);
		
		
		return dao.ListarSalaDisponible(vlSala);
		//return dao.buscar(vlSala);
	}
}

